package com.gaogzhen.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gaogzhen.domain.Market;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gaogzhen.dto.MarketDto;

import java.util.List;
import java.util.Map;

/**
* @author Administrator
* @date 2022-12-08 10:18
*/
public interface MarketService extends IService<Market>{


    /**
     * 分页查询交易市场列表
     * @param page          分页参数
     * @param tradeAreaId   交易市场id
     * @param status        状态
     * @return              交易市场列表
     */
    Page<Market> findByPage(Page<Market> page, Long tradeAreaId, Byte status);

    /**
     * 更新交易市场状态
     * @param id        交易市场状态
     * @param status    状态
     */
    void updateStatus(Long id, Byte status);

    /**
     * 查询交易区域下的交易市场
     * @param ids   交易区域ids
     * @return      交易区域下的交易市场map
     */
    Map<Long, List<Market>> getMarketsByTradeAreaId(List<Long> ids);

    /**
     * 通过交易对查询市场
     * @param symbol    交易对
     * @return          市场
     */
    Market getBySymbol(String symbol);

    /**
     * 使用报价货币和基础货币查询市场
     * @param buyCoinId
     * @param sellCoinId
     * @return
     */
    MarketDto findByCoinId(Long buyCoinId, Long sellCoinId);

    /**
     * 查询所有的市场数据
     * @return
     */
    List<MarketDto> queryAllMarkets();

    /**
     * 使用交易区域查询市场
     * @param id
     * @return
     */
    List<Market> queryByAreaId(Long id);
}
